package com.chenjiajin.service.impl;

import com.chenjiajin.service.TestService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;


@Service
//@Slf4j
public class TestServiceImpl implements TestService {


    //@Value("${value}")
    //private String value;

    //@Value("value")
    //private String value;

    //@Value("#{value}")           // 这种写法是Spring的EL表达式  ,根据Bean Name 去找对应的Bean , 找不到或者类型不匹配 则报异常
    //private DemoComponent value;         // 作用相当于@Autowired ,  不能注入接口

    @CustomizeInterface
    private String value;

    /**
     * 使用 @Value注解 的多种方式
     */
    @Override
    public void value() {
        System.err.println("value = " + value);               // value = com.chenjiajin.service.demoComponent@5349124d
    }


    /**
     * 日志的门面模式 和 @Slf4j注解
     */
    @Override
    public void log(HttpServletRequest request) {
        Logger log = LoggerFactory.getLogger(TestServiceImpl.class);
        log.info("log调用成功info");
        log.warn("log调用成功warn");
        log.error("log调用成功error");

        String id = request.getSession().getId();
        MDC.put("reqId", id);
        log.info("用户访问了一次登陆界面");

        log.debug("demo调用成功debug");
        //log.trace("demo调用成功trace");  // 不会打印出日志信息  因为默认只打印info及以上级别的日志
    }

}

